IMPORTANT: The order of the methods is critical here. You perform early binding in most cases, so the order of the methods here MUST match the order of their vtable layout (which is determined by their layout in IDL). The interop calls key off the vtable ordering, not the symbolic names. Therefore, if you switched these method declarations and tried to call the Exec method on an IOleCommandTarget interface from your application, it would translate into a call to the QueryStatus method instead.